#include <iostream>

// 静态成员变量属于类，不属于某个对象
// 静态成员由所有该类对象共享
// 静态成员可以直接由类进行访问
class Test
{
public:
    static int c;
    Test()
    {
        c++;
    }
    ~Test()
    {
        c--;
    }
    static void func()
    {
        //静态成员函数不能用非静态成员变量
        //a++
        //静态成员函数只能使用静态成员变量
        std::cout<<"static func()!"<<std::endl;  
    }
};

//静态成员变量的初始化在类外定义
int  Test::c = 0;


//坐标
class Point
{
public:
    Point(int x, int y):x(x),y(y){}

    //算法相关
    static int DistanceX(int x1, int x2)
    {
        return x2 - x1;
    }

private:
    int x;
    int y;

};

int main()
{
    // Test t;
    // std::cout<<t.c<<std::endl;
    // Test t1;
    // std::cout<<t1.c<<std::endl;    

    // //统计该类对象的数量
    // std::cout<<Test::c<<std::endl;

    // //静态成员函数的调用不需要依托对象
    // Test::func();


    //减少对象构造，简化代码
    Point::DistanceX(1,2);
    return 0;
}